<!doctype html>
<script src="../../resources/ahem.js"></script>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../assert_selection.js"></script>
<script>
// This test ensures that modifying the selection by line boundary granularity
// (like home/end do) functions properly in an inline editable context.

// adjacent, editable spans
selection_test(
    '<span contenteditable>a|bc</span><span contenteditable>xyz</span>',
    selection => selection.modify('move', 'forward', 'lineboundary'),
    '<span contenteditable>abc|</span><span contenteditable>xyz</span>',
    '1 End key: adjacent, editable spans');
selection_test(
    '<span contenteditable>a|bc</span><span contenteditable>xyz</span>',
    selection => selection.modify('move', 'backward', 'lineboundary'),
    '<span contenteditable>|abc</span><span contenteditable>xyz</span>',
    '2 Home key: adjacent, editable spans');

// editable span in non-editable content
selection_test(
    'abc <span contenteditable>X|YZ</span> def',
    selection => selection.modify('move', 'forward', 'lineboundary'),
    'abc <span contenteditable>XYZ|</span> def',
    '1 End key: editable span in non-editable content');
selection_test(
    'abc <span contenteditable>X|YZ</span> def',
    selection => selection.modify('move', 'backward', 'lineboundary'),
    'abc <span contenteditable>|XYZ</span> def',
    '2 Home key: editable span in non-editable content');
</script>
